package cn.lcsjsxy.yxz.day.Reflection;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

//常见异常
public class Abnormal {
    public static void main(String[] args) throws Exception{

        //员工的登录功能:

        // 1.ClassNotFoundException     : 类找不到异常
        // 2. NoSuchMethodException     : 没有方法的异常
        // 3. IllegalargumentException  : 参数异常
        // 4. NoSuchFieldException      : 没有属性的异常
        // 5. IllegalAccessException    : 访问权限的异常
        // 6. InvocationTargetException : 调度目标的异常

        //构建方法对象
        //Class empClass = Emp.class;
        Class<? extends Emp> empClass = new Emp().getClass();
        //Class<?> aClass = Class.forName("Reflection.Emp");

        Constructor declaredConstructor = empClass.getDeclaredConstructor();
        //构建对象
        Object emp = declaredConstructor.newInstance();

        //获取对象属性
        Field account = empClass.getField("account");
        Field password = empClass.getField("password");

        //属性赋值
        account.set(emp, "yang");
        password.set(emp, "123456");

        //登录
        Method login = empClass.getMethod("login");
        //调用
        Object result = login.invoke(emp);
        //输出
        System.out.println(result);

    }
}
// //员工
//class Emp1 {
//    public String account;
//    public String password;
//
//    //判断
//    public boolean login () {
//        if ("yang".equals(account) && "123456".equals(password)){
//            return true;
//        } else {
//            return false;
//        }
//    }
//}